const {News} = require("../models");
const modules = require("../models");
var Account = require("../models").Account;

// 注册一个用户
// userObj：用户对象
// 返回：新注册的用户对象
//创建用户
exports.createAccount = async function(userObj) {
  var result = await Account.create(userObj);
  if(!result) return
  return result;
};
//更改用户
exports.updateAccount = async function (id,obj) {
  var result = await modules.Account.updateMany(
    {
      _id: id //更新条件
    },
    {
      $set: {
        user: obj.user,
        name: obj.name,
        status: obj.status,
        phone: obj.phone,
        role: obj.role,
      }
    }
  );
  return result.matchedCount > 0; // 返回一个布尔值，表示是否至少有一个文档被更新
}


// 查询，按照发布日期降序排序
// 分页查询
// page 页码
// limit 页容量’
// keyWord:关键字 标题，内容，频道均可
// 返回 查询结果对象为 {total:总条数，data:新闻数组}

exports.getAccount = async function(page, limit, keyWord) {
  var reg = new RegExp(keyWord); //使用正则表达式来查询关键字
  var filter = {
    $or: [{ name: reg }]
  };
  var option = {
    sort: "-pubData",
    skip: (page - 1) * limit, //分页
    limit: limit
  };
  var datas = await Account.find(filter, null, option);
  var total = await Account.countDocuments(filter);
  return {
    total: total,
    datas: datas
  };
};

// 删除角色
exports.deleteAccount = async function(Id) {
  try {
    // 使用 findByIdAndDelete 方法根据新闻 ID 查找并删除新闻
    const deletedAccount = await Account.findByIdAndDelete(Id);

    // 检查是否成功删除了新闻
    if (!deletedAccount) {
      // 如果没有找到要删除的新闻，则抛出一个错误
      throw new Error('未找到该用户');
    }

    // 如果删除成功，则返回删除的新闻记录（可选）
    // 注意：出于安全考虑，通常不建议返回完整的删除记录，特别是如果记录中包含敏感信息
    // 这里只是为了演示目的而返回
    return deletedAccount;
  } catch (error) {
    // 捕获并处理任何错误
    console.error('删除用户时出错:', error);
    // 可以选择将错误重新抛出，或者返回一个错误消息
    throw error; // 或者返回一个错误对象，例如：{ error: '删除新闻时出错', message: error.message }
  }
};

// 更改启/禁用状态

exports.putStatus = async function (id,newStatus) {
  var result = await modules.Account.updateMany(
    {
      _id: id //更新条件
    },
    {
      $set: {
        status: newStatus // 更新status字段为newStatus
      }
    }
  );
  return result.matchedCount > 0; // 返回一个布尔值，表示是否至少有一个文档被更新
}


